package app.services.impl;

import java.util.List;

import app.models.FluxoCaixa;
import app.models.Produto;
import app.models.enums.TipoFluxoCaixa;
import app.repositories.FluxoCaixaRepository;
import app.repositories.Repository;
import app.services.FluxoCaixaService;
import app.services.ProdutoService;
import br.com.caelum.vraptor.ioc.Component;

@Component
public class FluxoCaixaServiceImpl extends GenericServiceImpl<FluxoCaixa, Long> implements FluxoCaixaService {

	private FluxoCaixaRepository repository;
	private ProdutoService produtoService;
	
	public FluxoCaixaServiceImpl (FluxoCaixaRepository repository, ProdutoService produtoService){
		this.repository = repository;
		this.produtoService = produtoService;
		super.setGenericRepository((Repository<FluxoCaixa, Long>) repository);
	}
	
	public List<FluxoCaixa> findByFilter(String filter) {
		return repository.findByFilter(filter);
	}

	public List<FluxoCaixa> findAllOrdered() {
		return repository.findAllOrdered();
	}

	public List<FluxoCaixa> findLastCreditos() {
		return repository.findLastCreditos();
	}
	
	public void updateProductAmount(FluxoCaixa fluxoCaixa) {
		Produto produto = produtoService.find(fluxoCaixa.getIdProduto().longValue());
		
		if(fluxoCaixa.getTipoFluxoCaixa().equals(TipoFluxoCaixa.ENTRADA)){
			produto.setQuantidade(produto.getQuantidade() + fluxoCaixa.getQuantidade());
		} else {
			produto.setQuantidade(produto.getQuantidade() - fluxoCaixa.getQuantidade());
		}
		
		produtoService.update(produto);
		
	}
	
}
